Powershell scripts/Agentless Container Posture/Onboarding.ps1 (50 lines of code) (raw):

<# .SYNOPSIS Enable Defender for Cloud cloud posture plan with containers related features. .DESCRIPTION A longer description. .PARAMETER SubscriptionsListFile Path to file containing subscriptions list. Subscriptions expected to be separated by new line .EXAMPLE onboard.ps1 subscriptions.txt #> param( $SubscriptionsListFile ) function main() { az login --use-device-code $regex = '' foreach($line in Get-Content -Path $SubscriptionsListFile) { if($line -match $regex) { handleSubscription $line } } } function handleSubscription($subscription) { echo "Handling subscription $subscription" # Account set az account set -s $line # Call Pricing API $auth = az account get-access-token --output json | ConvertFrom-Json $token = "$($auth.tokenType) $($auth.accessToken)" enableMdcPricing $subscription $token echo "Done for subscription $subscription" } function enableMdcPricing($subscription, $token) { $url = "https://management.azure.com/subscriptions/$subscription/providers/Microsoft.Security/pricings/cloudposture/?api-version=2023-01-01" $body = "{`"properties`":{`"pricingTier`":`"Standard`",`"extensions`":[{`"name`":`"AgentlessDiscoveryForKubernetes`",`"isEnabled`":`"True`"},{`"name`":`"ContainerRegistriesVulnerabilityAssessments`",`"isEnabled`":`"True`"}]}}" $headers = @{ "Accept" = "application/json" "Content-Type" = "application/json" "Authorization" = $token } # Invoke $response = Invoke-RestMethod -Uri $url -Method 'PUT' -Body $body -Headers $headers } main